<?xml version="1.0" encoding="UTF-8"?>

<beans xmlns="http://www.springframework.org/schema/beans"
	xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
	xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd">

    <!-- Datenbank "definieren" -->
    
	<bean id="dataSource"
		class="com.mchange.v2.c3p0.ComboPooledDataSource"
		destroy-method="close">
		<property name="driverClass" value="com.mysql.jdbc.Driver" />
		<property name="jdbcUrl" value="jdbc:mysql://localhost:3306/urlaubsverwaltung2db" />
		<property name="user" value="root" />
		<property name="password" value="" />
		<property name="minPoolSize" value="2" />
      	<property name="maxPoolSize" value="4" />
	</bean>
	
	
	<!-- HibernateSessionFactory "definieren" -->
	
	<bean id="hibernateSessionFactory"
		class="org.springframework.orm.hibernate3.annotation.AnnotationSessionFactoryBean">
		<property name="dataSource" ref="dataSource" />    <!-- Als Eigenschaft wird die Datenbank angegeben mit id="dataSource", siehe oben -->
		<property name="annotatedClasses">
			<list>
			    <!-- Hier Angabe der Klassen des Geschäftsmodells  -->
				<value>pms.om.Mitarbeiter</value>
				<value>pms.om.Abteilung</value>
				<value>pms.om.Abwesenheitsart</value>
				<value>pms.om.Urlaubsanspruch</value>
				<value>pms.om.MitarbeiterAbwesend</value>
				<value>pms.om.Sperrtag</value>
				<value>pms.om.Feiertag</value>
				<value>pms.om.Jahr</value>
			</list>
		</property>
		<property name="hibernateProperties">
			<props>
				<prop key="hibernate.dialect">org.hibernate.dialect.MySQLDialect</prop>
				<prop key="hibernate.hbm2ddl.auto">update</prop>
				<prop key="hibernate.show_sql">false</prop>
				<prop key="hibernate.cache.provider_class">org.hibernate.cache.NoCacheProvider</prop>
			</props>
		</property>
	</bean>
	
	<bean id="transactionManager" class="org.springframework.orm.hibernate3.HibernateTransactionManager">
		<property name="sessionFactory" ref="hibernateSessionFactory" />
	</bean>
	
	<!-- Angabe der DAO Objekte mit Eigenschaften -->
	  
	<bean id="mitarbeiterDao" class="pms.dao.MitarbeiterDao">
		<property name="sessionFactory" ref="hibernateSessionFactory" />
	</bean>	
	
	<bean id="abteilungDao" class="pms.dao.AbteilungDao">
		<property name="sessionFactory" ref="hibernateSessionFactory" />
	</bean>
	
	<bean id="abwesenheitsartDao" class="pms.dao.AbwesenheitsartDao">
		<property name="sessionFactory" ref="hibernateSessionFactory" />
	</bean>
	
	<bean id="urlaubsanspruchDao" class="pms.dao.UrlaubsanspruchDao">
		<property name="sessionFactory" ref="hibernateSessionFactory" />
	</bean>

	<bean id="mitarbeiterAbwesendDao" class="pms.dao.MitarbeiterAbwesendDao">
		<property name="sessionFactory" ref="hibernateSessionFactory" />
	</bean>
	
	<bean id="feiertagDao" class="pms.dao.FeiertagDao">
		<property name="sessionFactory" ref="hibernateSessionFactory" />
	</bean>
	
	<bean id="sperrtagDao" class="pms.dao.SperrtagDao">
		<property name="sessionFactory" ref="hibernateSessionFactory" />
	</bean>
	
	<bean id="jahrDao" class="pms.dao.JahrDao">
		<property name="sessionFactory" ref="hibernateSessionFactory" />
	</bean>
	
	


    <!-- Als letztes die Controllerzurdnung die die DAO-Objekte nutzen 
         Die Controller rufen dann auch die entsprechenden Views auf -->
	
	
	
	<bean name="HomeController" class="pms.controller.Home" />
	
	
	<bean name="EditMitarbeiterController" class="pms.controller.EditMitarbeiter">
		<property name="mitarbeiterDao" ref="mitarbeiterDao" />
	</bean>
	
	<bean name="AlleMitarbeiterController" class="pms.controller.AlleMitarbeiter">
		<property name="mitarbeiterDao" ref="mitarbeiterDao" />
	</bean>
	
	<bean name="SaveMitarbeiterController" class="pms.controller.SaveMitarbeiter">
		<property name="mitarbeiterDao" ref="mitarbeiterDao" />
	</bean>
	
	
	
	
	<bean name="EditAbteilungController" class="pms.controller.EditAbteilung">
		<property name="abteilungDao" ref="abteilungDao" />
	</bean>

	<bean name="AlleAbteilungenController" class="pms.controller.AlleAbteilungen">
		<property name="abteilungDao" ref="abteilungDao" />
	</bean>
	
	<bean name="SaveAbteilungController" class="pms.controller.SaveAbteilung">
		<property name="abteilungDao" ref="abteilungDao" />
	</bean>
	
	<bean name="LoescheAbteilungController" class="pms.controller.LoescheAbteilung">
		<property name="abteilungDao" ref="abteilungDao" />
	</bean>
	
	
	
	
	<bean name="EditAbwesenheitController" class="pms.controller.EditAbwesenheitsart">
		<property name="abwesenheitsartDao" ref="abwesenheitsartDao" />
	</bean>

	<bean name="AlleAbwesenheitenController" class="pms.controller.AlleAbwesenheitsarten">
		<property name="abwesenheitsartDao" ref="abwesenheitsartDao" />
	</bean>
	
	<bean name="SaveAbwesenheitenController" class="pms.controller.SaveAbwesenheitsart">
		<property name="abwesenheitsartDao" ref="abwesenheitsartDao" />
	</bean>
	
	<bean name="LoescheAbwesenheitenController" class="pms.controller.LoescheAbwesenheitsart">
		<property name="abwesenheitsartDao" ref="abwesenheitsartDao" />
	</bean>
	
	
	
	<bean name="WaehleAbteilungfuerMitarbeiterController" class="pms.controller.WaehleAbteilungfuerMitarbeiter">
		<property name="abteilungDao" ref="abteilungDao" />
	</bean>
	
	<bean name="WaehleMitarbeiterderAbteilungController" class="pms.controller.WaehleMitarbeiterderAbteilung">
		<property name="abteilungDao" ref="abteilungDao" />
		<property name="mitarbeiterDao" ref="mitarbeiterDao" />
	</bean>
	
	<bean name="EntferneMitarbeiterausAbteilungController" class="pms.controller.EntferneMitarbeiterausAbteilung">
		<property name="abteilungDao" ref="abteilungDao" />
		<property name="mitarbeiterDao" ref="mitarbeiterDao" />
	</bean>
	
	<bean name="FuegeMitarbeiterzuAbteilungController" class="pms.controller.FuegeMitarbeiterzuAbteilung">
		<property name="abteilungDao" ref="abteilungDao" />
		<property name="mitarbeiterDao" ref="mitarbeiterDao" />
	</bean>
	
	
	
	
	<bean name="WaehleMitarbeiter1Controller" class="pms.controller.WaehleMitarbeiter1">
		<property name="mitarbeiterDao" ref="mitarbeiterDao" />
	</bean>	
	
	<bean name="WaehleUrlaubfuerMitarbeiterController" class="pms.controller.WaehleUrlaubfuerMitarbeiter">
		<property name="mitarbeiterDao" ref="mitarbeiterDao" />
		<property name="urlaubsanspruchDao" ref="urlaubsanspruchDao" />
		<property name="jahrDao" ref="jahrDao" />
		<property name="mitarbeiterAbwesendDao" ref="mitarbeiterAbwesendDao" />
	</bean>
	
	<bean name="LoescheUrlaubMitarbeiterController" class="pms.controller.LoescheUrlaubMitarbeiter">
		<property name="mitarbeiterDao" ref="mitarbeiterDao" />
		<property name="urlaubsanspruchDao" ref="urlaubsanspruchDao" />
		<property name="jahrDao" ref="jahrDao" />
		<property name="mitarbeiterAbwesendDao" ref="mitarbeiterAbwesendDao" />
	</bean>
	
	<bean name="SaveMitarbeiterUrlaubzuordnenneuController" class="pms.controller.SaveMitarbeiterUrlaubzuordnenneu">
		<property name="mitarbeiterDao" ref="mitarbeiterDao" />
		<property name="urlaubsanspruchDao" ref="urlaubsanspruchDao" />
		<property name="jahrDao" ref="jahrDao" />
		<property name="mitarbeiterAbwesendDao" ref="mitarbeiterAbwesendDao" />
	</bean>	
	

	
	

	<bean name="AbwesenheitVormerkenController" class="pms.controller.AbwesenheitVormerken">
		<property name="mitarbeiterDao" ref="mitarbeiterDao" />
		<property name="abwesenheitsartDao" ref="abwesenheitsartDao" />
	</bean>
	
	<bean name="AlleAbwesenheitendesMitarbeitersController" class="pms.controller.AlleAbwesenheitendesMitarbeiters">
		<property name="mitarbeiterAbwesendDao" ref="mitarbeiterAbwesendDao" />
		<property name="mitarbeiterDao" ref="mitarbeiterDao" />
		<property name="jahrDao" ref="jahrDao" />
		<property name="abteilungDao" ref="abteilungDao" />
	</bean>
	
	<bean name="LoescheAbwesenheitController" class="pms.controller.LoescheAbwesenheit">
		<property name="mitarbeiterAbwesendDao" ref="mitarbeiterAbwesendDao" />
		<property name="mitarbeiterDao" ref="mitarbeiterDao" />
	</bean>	
	
	
	
	<bean name="WaehleMitarbeiter2Controller" class="pms.controller.WaehleMitarbeiter2">
		<property name="mitarbeiterDao" ref="mitarbeiterDao" />
	</bean>	
	
	<bean name="AlleAbwesenheitendesMitarbeiters2Controller" class="pms.controller.AlleAbwesenheitendesMitarbeiters2">
		<property name="mitarbeiterDao" ref="mitarbeiterDao" />
		<property name="mitarbeiterAbwesendDao" ref="mitarbeiterAbwesendDao" />
		<property name="jahrDao" ref="jahrDao" />
		<property name="abteilungDao" ref="abteilungDao" />
	</bean>
	
	<bean name="BestaetigeAbwesenheitController" class="pms.controller.BestaetigeAbwesenheit">
		<property name="mitarbeiterAbwesendDao" ref="mitarbeiterAbwesendDao" />
		<property name="mitarbeiterDao" ref="mitarbeiterDao" />
		<property name="jahrDao" ref="jahrDao" />
		<property name="abteilungDao" ref="abteilungDao" />
	</bean>	
	
	
	
	
	<bean name="KalenderController" class="pms.controller.Kalender">
		<property name="mitarbeiterAbwesendDao" ref="mitarbeiterAbwesendDao" />
		<property name="mitarbeiterDao" ref="mitarbeiterDao" />
		<property name="jahrDao" ref="jahrDao" />		
	</bean>
		
		
		
	<!-- ADMIN THEMEN -->

	<bean name="FeiertagController" class="pms.controller.EditFeiertag">
		<property name="feiertagDao" ref ="feiertagDao" />
	</bean>	

	<bean name="AlleFeiertageController" class="pms.controller.AlleFeiertage">
		<property name="feiertagDao" ref ="feiertagDao" />
	</bean>	
	
	<bean name="SaveFeiertagController" class="pms.controller.SaveFeiertag">
		<property name="feiertagDao" ref ="feiertagDao" />
	</bean>
	
	<bean name="LoescheFeiertagController" class="pms.controller.LoescheFeiertag">
		<property name="feiertagDao" ref ="feiertagDao" />
	</bean>
	
	<bean name="SperrtagController" class="pms.controller.EditSperrtag">
		<property name="sperrtagDao" ref ="sperrtagDao" />
	</bean>	

	<bean name="AlleSperrtageController" class="pms.controller.AlleSperrtage">
		<property name="sperrtagDao" ref ="sperrtagDao" />
	</bean>	
	
	<bean name="SaveSperrtagController" class="pms.controller.SaveSperrtag">
		<property name="sperrtagDao" ref ="sperrtagDao" />
	</bean>	
	
	<bean name="LoescheSperrtagController" class="pms.controller.LoescheSperrtag">
		<property name="sperrtagDao" ref ="sperrtagDao" />
	</bean>
		
	<bean name="JahrController" class="pms.controller.EditJahr">
		<property name="jahrDao" ref ="jahrDao" />
	</bean>	

	<bean name="AlleJahreController" class="pms.controller.AlleJahre">
		<property name="jahrDao" ref ="jahrDao" />
	</bean>	
	
	<bean name="SaveJahrController" class="pms.controller.SaveJahr">
		<property name="jahrDao" ref ="jahrDao" />
	</bean>	
	
	<bean name="LoescheJahrController" class="pms.controller.LoescheJahr">
		<property name="jahrDao" ref ="jahrDao" />
	</bean>
	
	<bean name="WaehleJahrController" class="pms.controller.WaehleJahr">
		<property name="jahrDao" ref ="jahrDao" />
	</bean>
	
	<bean name="WaehleFeiertagSperrtagfuerJahrController" class="pms.controller.WaehleFeiertagSperrtagfuerJahr">
		<property name="sperrtagDao" ref ="sperrtagDao" />
		<property name="feiertagDao" ref ="feiertagDao" />
		<property name="jahrDao" ref ="jahrDao" />
	</bean>
	
	<bean name="EntferneFeiertagausJahrController" class="pms.controller.EntferneFeiertagausJahr">
		<property name="sperrtagDao" ref ="sperrtagDao" />
		<property name="feiertagDao" ref ="feiertagDao" />
		<property name="jahrDao" ref ="jahrDao" />
	</bean>
	
	<bean name="FuegeFeiertagJahrzuController" class="pms.controller.FuegeFeiertagJahrzu">
		<property name="sperrtagDao" ref ="sperrtagDao" />
		<property name="feiertagDao" ref ="feiertagDao" />
		<property name="jahrDao" ref ="jahrDao" />
	</bean>
	
	<bean name="EntferneSperrtagausJahrController" class="pms.controller.EntferneSperrtagausJahr">
		<property name="sperrtagDao" ref ="sperrtagDao" />
		<property name="feiertagDao" ref ="feiertagDao" />
		<property name="jahrDao" ref ="jahrDao" />
	</bean>
	
	<bean name="FuegeSperrtagJahrzuController" class="pms.controller.FuegeSperrtagJahrzu">
		<property name="sperrtagDao" ref ="sperrtagDao" />
		<property name="feiertagDao" ref ="feiertagDao" />
		<property name="jahrDao" ref ="jahrDao" />
	</bean>
	
</beans>
